package com.example.parent.bookmanage_security.controller;

import jakarta.annotation.security.RolesAllowed;
import org.springframework.security.access.annotation.Secured;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 图书管理控制器
 * 处理与图书相关的HTTP请求，结合Spring Security实现基于角色的访问控制
 */
@Controller // 标识为Spring MVC控制器，负责处理HTTP请求并返回视图
@RequestMapping("book") // 定义基础请求路径，所有方法的请求路径都以此为前缀
public class BookController {

    /**
     * 图书列表查询接口
     * 无需特定角色，已登录用户均可访问（由Security配置控制）
     *
     * @return 视图名称，对应book_list.html页面
     */
    @RequestMapping("list") // 映射请求路径，完整路径为/book/list
    public String findList() {
        // 返回图书列表视图
        return "book_list";
    }

    /**
     * 图书管理接口（管理员专用）
     * 使用@Secured注解限制仅ADMIN角色可访问
     * 注意：@Secured注解的值需要包含"ROLE_"前缀
     *
     * @return 视图名称，对应book_manage.html页面
     */
    @RequestMapping("admin/manage") // 映射请求路径，完整路径为/book/admin/manage
    @Secured("ROLE_ADMIN") // 方法级权限控制，仅拥有ROLE_ADMIN角色的用户可访问
    public String findManageList() {
        // 返回图书管理视图
        return "book_manage";
    }
}